找传奇、传世资源到传世资源站!

android_wifi并实现文件传输_wifitesthot_

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

测试android wifi并实现文件传输

android_wifi并实现文件传输_wifitesthot_ Android平台开发-第1张

package com.example.android.wifidirect;

import android.app.IntentService;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;

/**
 * A service that process each file transfer request i.e Intent by opening a
 * socket connection with the WiFi Direct Group Owner and writing the file
 */
public class FileTransferService extends IntentService {

  private static final int SOCKET_TIMEOUT = 5000;
  public static final String ACTION_SEND_FILE = "com.example.android.wifidirect.SEND_FILE";
  public static final String EXTRAS_FILE_PATH = "file_url";
  public static final String EXTRAS_GROUP_OWNER_ADDRESS = "go_host";
  public static final String EXTRAS_GROUP_OWNER_PORT = "go_port";

  public FileTransferService(String name) {
    super(name);
  }

  public FileTransferService() {
    super("FileTransferService");
  }

  /*
   * (non-Javadoc)
   * @see android.app.IntentService#onHandleIntent(android.content.Intent)
   */
  @Override
  protected void onHandleIntent(Intent intent) {

    Context context = getApplicationContext();
    if (intent.getAction().equals(ACTION_SEND_FILE)) {
      String fileUri = intent.getExtras().getString(EXTRAS_FILE_PATH);
      String host = intent.getExtras().getString(EXTRAS_GROUP_OWNER_ADDRESS);
      Socket socket = new Socket();
      int port = intent.getExtras().getInt(EXTRAS_GROUP_OWNER_PORT);

      try {
        Log.d(WiFiDirectActivity.TAG, "Opening client socket - ");
        socket.bind(null);
        socket.connect((new InetSocketAddress(host, port)), SOCKET_TIMEOUT);

        Log.d(WiFiDirectActivity.TAG, "Client socket - "  socket.isConnected());
        OutputStream stream = socket.getOutputStream();
        ContentResolver cr = context.getContentResolver();
        InputStream is = null;
        try {
          is = cr.openInputStream(Uri.parse(fileUri));
        } catch (FileNotFoundException e) {
          Log.d(WiFiDirectActivity.TAG, e.toString());
        }
        DeviceDetailFragment.copyFile(is, stream);
        Log.d(WiFiDirectActivity.TAG, "Client: Data written");
      } catch (IOException e) {
        Log.e(WiFiDirectActivity.TAG, e.getMessage());
      } finally {
        if (socket != null) {
          if (socket.isConnected()) {
            try {
              socket.close();
            } catch (IOException e) {
              // Give up
              e.printStackTrace();
            }
          }
        }
      }

    }
  }
}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复